package com.qs.sckill.utils;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * md5数据库密码加密工具类
 *
 * @author qinyupeng
 * @since 2019-07-22 09:36:04
 */
public class MD5Util {

    private static final String salt = "1a2b3c4d";

    /**
     * md5加密
     */
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }


    /**
     * 将表单输入的密码和固定salt结合起来，md5加密后，生成密码密文
     *
     * @param inputPass 表单输入的密码
     * @return 返回加密后的密文
     */
    public static String inputPassToFormPass(String inputPass) {
        //注意这里的char装换为字符串，可能有意想不到的结果哟
        String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

    /**
     * 将页面加密后的密文密码，使用数据库设置的salt，再进行一次md5加密，返回存储数据库的密码密文
     *
     * @param formPass 表单密码md5加密后的密文
     * @param saltDB   数据库中获取的salt
     * @return 返回数据库密码密文
     */
    public static String formPassToDBPass(String formPass, String saltDB) {
        String str = saltDB + formPass;
        return md5(str);
    }

    /**
     * 根据表单输入的密码明文返回数据库密码密文
     *
     * @param inputPass 表单输入的明文密码
     * @param saltDB    数据库存储的salt
     * @return 返回数据库密码密文
     */
    public static String inputPassToDbPass(String inputPass, String saltDB) {
        String formPass = inputPassToFormPass(inputPass);
        return formPassToDBPass(formPass, saltDB);
    }


}
